Skip to content

Ship's gate policy stops paying for a durable runtime to assert it - #262

Merged
czpython merged 1 commit into
mainfrom
cut-build-durable
Aug 16, 2026
Merged

Ship's gate policy stops paying for a durable runtime to assert it#262
czpython merged 1 commit into
mainfrom
cut-build-durable

Conversation

@czpython

Copy link
Copy Markdown
Owner

test_build_durable booted a module-scoped Postgres and a DBOS runtime, then polled a 20s _wait loop, to make five assertions. Four were already made elsewhere, cheaply; the fifth was the platform's.

test why it goes
machine_mode_reaches_work_gate… duplicates test_build_plan_phase, which covers every gate mode with no runtime
machine_then_human_reviews… same
happy_path_declares_merge_intent assembly only — journal in test_build_journal, merge_when_ready in test_github, settlement in test_webhooks_pull_request (the file's own comment pointed there)
the_attempt_claims_the_item_once the claim is @subscribe(SCHEDULED); a resume emits no SCHEDULED, so this asserts the platform's event lifecycle
rejected_merge_intent_reparks_work_gate kept — moved to the phase harness

The repark did not need the runtime either: _approved_work re-enters the work gate when declare_merge_intent returns false. Twenty lines against the phase, same shape as its neighbours. Mutation-checked — removing the repark turns it red.

The suite also loses the harness that made it flake: the uncommitted cancel holding work_items row locks across a whole module, on the one background loop every workflow body shares.

366 lines out, 21 in. Backend suite 1189 passed / 50 skipped.

🤖 Generated with Claude Code

test_build_durable booted a module-scoped Postgres and a DBOS runtime, then
polled a 20s _wait loop, to make five assertions. Four of them were already
made elsewhere, cheaply, and the fifth was the platform's.

The two plan-gate tests duplicated test_build_plan_phase, which covers every
mode against the body's own phase methods with no runtime at all. The happy
path asserted an assembly whose parts each have a home: the journal's delivery
in test_build_journal, merge_when_ready's client behaviour in test_github, and
the pr.closed settlement in test_webhooks_pull_request — the file's own comment
already pointed at the last one. The claim test asserted that a gate resume
does not re-run the claim, but the claim is @subscribe(SCHEDULED) and a resume
emits no SCHEDULED, so that is the platform's event lifecycle, not ship's.

Only the repark survived with no other home, and it did not need the runtime
either: _approved_work re-enters the work gate when declare_merge_intent comes
back false. Twenty lines against the phase, same as its neighbours.

The suite loses the harness that made it flake — the uncommitted cancel holding
work_items row locks across a whole module, on the one background loop every
workflow body shares.
@czpython
czpython enabled auto-merge (squash) August 16, 2026 14:44
@czpython
czpython merged commit 5db45b4 into main Aug 16, 2026
1 check passed
@czpython
czpython deleted the cut-build-durable branch August 16, 2026 14:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant